// 导入axios
import axios from 'axios';

import store from '@/store'

import JSONBig from "json-bigint";


// JSON.parse()
// JSON.stringify()
// js转换极限是2的53次方
// JSONBig可以处理数据中超出js安全整数范围的问题
// JSONBig.parse()  //把JSON格式字符串转为js对象
// JSONBig.stringify() // 把js对象转为JSON格式的字符串

// 调用 axios的create方法
const request = axios.create({
    // 设置请求基地址
    baseURL: 'http://toutiao.itheima.net/',
    // 自定义后端返回的原始数据
    // data:后端返回的原始数据，即JSON格式的字符串
    transformResponse: [function (data) {
        try {
            return JSONBig.parse(data)
        } catch (error) {
        return data          
        }
      }]
})

// 请求拦截器
// add a request interceptor
request.interceptors.request.use(function (config) {
    // 请求发起会经过这里
    // config：本次请求的请求配置对象
    const { info } = store.state
    if (info && info.token) {
        config.headers.Authorization = `Bearer ${info.token}`
    }
    // 注意：这里务必要返回config配置对象，否则请求就停在这里出不去
    return config
}, function (error) {
    // 如果请求出错了（还没有发出去）会进入这里
    return Promise.reject(error)
})

export default request